﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LinqKit;
using FrameworkLib.Filters;
using GestionePolveri2.DAL;
using System.Data.Objects;

namespace GestionePolveriLib.BL.FilterBags
{
    public enum PolvereTypes
    {
        Tutte = 0,
        Normali,
        XXXX
    }

    public class VerniciatoreScortaMinimaFilterBag : FilterBase<AnagPolveri>, IFilterBase
    {
        public string CodicePolvere { get; set; }
        public string Fornitore { get; set; }
        public PolvereTypes Tipo { get; set; }

        public VerniciatoreScortaMinimaFilterBag()
        {

        }

        public override System.Linq.Expressions.Expression<Func<AnagPolveri, bool>> SetUpFilter()
        {
            var predicate = PredicateBuilder.True<AnagPolveri>();

            //if (this.UseDates)
            //{
            //    // aggiungi al filtro il controllo sulla data...
            //    predicate = predicate.And(im => (EntityFunctions.TruncateTime(im.DataMovimento) >= EntityFunctions.TruncateTime(this.PeriodFrom)) &&
            //                                     EntityFunctions.TruncateTime(im.DataMovimento) <= EntityFunctions.TruncateTime(this.PeriodTo));
            //}

            if (!string.IsNullOrWhiteSpace(CodicePolvere))
            {
                predicate = predicate.And(im => im.CodicePolvere == CodicePolvere);
            }

            if (!string.IsNullOrWhiteSpace(Fornitore))
            {
                predicate = predicate.And(im => im.AnagFornitori.Descrizione == Fornitore);
            }

            switch (Tipo)
            {
                case PolvereTypes.Tutte:
                    break;
                case PolvereTypes.Normali:
                    predicate = predicate.And(im => im.IsCodiceCustom == false);
                    break;
                case PolvereTypes.XXXX:
                    predicate = predicate.And(im => im.IsCodiceCustom == true);
                    break;
                default:
                    break;
            }
            

            return predicate;
        }
    }
}
